#ifndef GND_MAINWIN_H
#define GND_MAINWIN_H

#include <gtk/gtk.h>

#define GND_MAINWIN_SCREENCAP_W 320
#define GND_MAINWIN_SCREENCAP_H 480

G_DECLARE_FINAL_TYPE(GndMainwin, gnd_mainwin, GND, MAINWIN, GtkWindow)

#define GND_TYPE_MAINWIN (gnd_mainwin_get_type())

GndMainwin * gnd_mainwin_new();



typedef struct _GndDeviceInfoPage {
    GtkBox * hbox_main;
    GtkBox * vbox_device_screen;
    GtkGrid * grid_device_info;
    GtkImage * image_device_screen;
    GtkButtonBox * button_box_device_screen_control;
    GtkButton * button_screen_refresh;
    GtkButton * button_screen_save;
    GtkButton * button_screen_setting;
    GtkSeparator * separator_info_page;
    GtkBox * vbox_device_info;

    GtkLabel * label_model;
    GtkLabel * label_model_info;
    GtkLabel * label_manuf;
    GtkLabel * label_manuf_info;
    GtkLabel * label_sysver;
    GtkLabel * label_sysver_info;
    GtkLabel * label_kernel;
    GtkLabel * label_kernel_info;
    GtkLabel * label_imei;
    GtkLabel * label_imei_info;
    GtkLabel * label_mac;
    GtkLabel * label_mac_info;
    GtkLabel * label_cpu;
    GtkLabel * label_cpu_info;
    GtkLabel * label_sdk_api;
    GtkLabel * label_sdk_api_info;
    GtkLabel * label_brand;
    GtkLabel * label_brand_info;
    GtkLabel * label_product;
    GtkLabel * label_product_info;
    GtkLabel * label_cpu_abi;
    GtkLabel * label_cpu_abi_info;
    GtkLabel * label_resolution;
    GtkLabel * label_resolution_info;
    GtkLabel * label_ram;
    GtkLabel * label_ram_info;
    GtkLabel * label_rom;
    GtkLabel * label_rom_info;

    GtkGrid * grid_disk_info;
    GtkLabel * label_disk_info;
    GtkLevelBar * levelbar_disk_usage;
    GtkLabel * label_disk_usage;
    GtkButton * button_disk_manage;


} GndDeviceInfoPage;


typedef struct _GndFilePage
{
    GtkBox * vbox_main;
    GtkBox * hbox_path_control;
    GtkBox * hbox_disk_usage;
    GtkButton * btn_pre_page;
    GtkButton * btn_next_page;
    GtkButton * btn_up_page;
    GtkButton * btn_path_enter;
    GtkButton * btn_import;
    GtkEntry * entry_path;
    GtkTreeView * treeview_file_list;
    GtkLevelBar * levelbar_disk_usage;
    GtkLabel * label_disk_usage;

} GndFilePage;

typedef struct _GndAppPage
{
    GtkBox * vbox_main;
    GtkBox * hbox_control;
    GtkTreeView * treeview_app_list;
    GtkCheckButton * check_button_sysapp_show;
    GtkButton * btn_app_install;
    GtkButton * btn_refresh;
} GndAppPage;

typedef struct _GndToolPage
{
    GtkBox * vbox_main;
    GtkScrolledWindow * scrolledwin_tool;
    GtkFlowBox * flowbox_tool;
} GndToolPage;

struct _GndMainwin {
    GtkWindow parent;
    GtkHeaderBar * header_bar;
    GtkStackSwitcher * stack_switcher;
    GtkStack * stack;
    GtkBox * vbox_mainpage;
    GtkStatusbar * status_bar;
    GtkMenuButton * menubtn_menu;
    GtkPopover * popover_menu;
    GtkComboBoxText * combobox_devices;
    GtkButton * button_refresh;
    GtkButton * button_connect;

    GndDeviceInfoPage * device_info_page;
    GndFilePage * file_page;
    GndAppPage * app_page;
    GndToolPage * tool_page;
};


typedef enum _GndMainwinInfoId {
    GND_MAINWIN_INFO_ID_MAIN,
    GND_MAINWIN_INFO_ID_CONNECT
} GndMainwinInfoId;


#endif
